/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package td2;

/**
 *
 * @author boomar
 */
public class Note implements Comparable<Note>{

    //========================================================================
    //                             Attributs
    //========================================================================
    private Matiere matiere;
    private double valeur;
    private Etudiant etudiant;

    //========================================================================
    //                             Constructeurs
    //========================================================================

    public Note(Matiere matiere, double valeur, Etudiant etudiant) {
        this.matiere = matiere;
        this.valeur = valeur;
        this.etudiant = etudiant;
    }

    //========================================================================
    //                             Getters
    //========================================================================

    public Etudiant getEtudiant() {
        return etudiant;
    }

    public Matiere getMatiere() {
        return matiere;
    }

    public double getValeur() {
        return valeur;
    }

    //========================================================================
    //                             Setters
    //========================================================================

    public void setEtudiant(Etudiant etudiant) {
        this.etudiant = etudiant;
    }

    public void setMatiere(Matiere matiere) {
        this.matiere = matiere;
    }

    public void setValeur(double valeur) {
        this.valeur = valeur;
    }

    //========================================================================
    //                             Méthodes
    //========================================================================

    @Override
    public String toString() {
        return "Note{" + "matiere=" + matiere + "valeur=" + valeur + "etudiant=" + etudiant + '}';
    }

    //========================================================================

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Note other = (Note) obj;
        if (this.matiere != other.matiere) {
            return false;
        }
        if (Double.doubleToLongBits(this.valeur) != Double.doubleToLongBits(other.valeur)) {
            return false;
        }
        if (this.etudiant != other.etudiant && (this.etudiant == null || !this.etudiant.equals(other.etudiant))) {
            return false;
        }
        return true;
    }

    //========================================================================

    @Override
    public int hashCode() {
        int hash = 5;
        hash = 71 * hash + (this.matiere != null ? this.matiere.hashCode() : 0);
        hash = 71 * hash + (int) (Double.doubleToLongBits(this.valeur) ^ (Double.doubleToLongBits(this.valeur) >>> 32));
        hash = 71 * hash + (this.etudiant != null ? this.etudiant.hashCode() : 0);
        return hash;
    }

    //========================================================================

    public int compareTo(Note o) {
        return (valeur == o.valeur) ? 0 : ((valeur < o.valeur) ? -1 : 1) ;
    }

    //========================================================================
}
